package com.bilibili.juc.me;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MySortStringListDemo {
    private transient int age;
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("(^\\d+),");
        List<String> list = new ArrayList<>();
        list.add("10,根据错误报告，http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4286238 ");
        list.add("13,策略文件并未禁止 System.exit() 调用。我正在使用 Java 1.6 ");
        list.add("12,运行一个应用程序，尽管它已“解决”，但我仍然看到这个错误。与 OP ");
        list.add("11,类似，我有一个系统范围的策略文件，其中不包含 exitVM ");
        list.add("2,的权限。但是，我能够退出应用程序而不会抛出任何异常。");
        list.add("3,我对包含自定义策略文件的理解是，除包含在策略文件中的权限外，所有权限都被列入黑名单");
        list.add("9,除包含在策略文件中的权限外，所有权限都被列入黑名单。由于不包括 exitVM，因此应该禁止它(覆盖 MicSim 提到的默认权限)。但这种情况并非如此。");
        list.add("8,所有权限都被列入黑名单。由于不包括 exitVM，因此应该禁止它(覆盖 MicSim 提到的默认权限)。但这种情况并非如此。");
        list.add("7,由于不包括 exitVM，因此应该禁止它(覆盖 MicSim 提到的默认权限)。但这种情况并非如此。");
        list.add("6,因此应该禁止它(覆盖 MicSim 提到的默认权限)。但这种情况并非如此。");
//        Collections.sort(list); //有问题的
        Collections.sort(list,(s1,s2) -> {

            Matcher matcher = pattern.matcher(s1);
            int n1 = 0;
            if (matcher.find()){
                //System.out.println(matcher.group(0));
                //System.out.println(matcher.group(1));
                n1 = Integer.valueOf(matcher.group(1));
            }
            matcher = pattern.matcher(s2);
            int n2 = 0;
            if (matcher.find()){
                //System.out.println(matcher.group(0));
                //System.out.println(matcher.group(1));
                n2 = Integer.valueOf(matcher.group(1));
            }
            return n1-n2;
        });
        list.forEach(System.out::println);
    }
}
